/**
单例设计模式:保证一个类仅有一个实例，并提供一个访问它的全局访问点。

作用 让一些无属性的工具类能 频繁 统一 的 调用函数。

1.构造方法是优化
2.声明一个本类对象
3.给外部提供一个静态方法获取对象实例

两种实现方式
1.饿汉式
2.懒汉式


*@author leo
*@company leo's company
*@description java_study
2024年2月5日上午12:44:48
Administrator
 */

/*
package com.leo.第四章_面向对象上;
public class U4_L13L_单例模式 {
	public static void main(String[] args) {
		o();
	}
	
	//一致性
	private static void o() {
		Singleton s=Singleton.allin();
		s.getinfo();
		Singleton s1=Singleton.allin();
		s1.getinfo();
		Base_class b1=Base_class.allin();
		b1.getinfo();
		Base_class b2=Base_class.allin();
		b2.getinfo();
	}
}
//饿汉模式 一直到程序结束  占用内存多 运行效率高
class Singleton{
	//2个计数可以省去
	static int static_count=0;
	int count=0;
	//私有化构造
	private Singleton() {}
	//私有化并且静态化 唯一的对象
	private static Singleton base_interface=new Singleton();
	//公开的统一接口
	public static Singleton allin() {
		System.out.println((static_count+1)+". 饿汉式调用Singleton 通用接口成功！");		
		static_count++;
		return base_interface;
	}
	//使用其他的引用对象调用方法 
	public void getinfo() {
		System.out.println((count+1)+". getinfo调用成功！");
		count++;
	}
}

//饱汉式 要用的时候调用	暂用内存少 运行效率低
class Base_class{
	static int static_count=0;
	int count=0;
	private Base_class() {}
	private static Base_class base_class;
	public static Base_class allin() {
		System.out.println((static_count+1)+". 懒汉式调用Base_class 通用接口allin成功！");
		if (base_class==null) {
			base_class=new Base_class();
		}
		static_count++;
		return base_class;
	}
	public void getinfo() {
		System.out.println((count+1)+". getinfo调用成功！");
		count++;
	}
}
*/


